home *** CD-ROM | disk | FTP | other *** search
/ MacFormat 1994 December / macformat-019.iso / Shareware in MacFormat / Thermometer ƒ / Thermometer Source / thermMenus.c next >
Encoding:
C/C++ Source or Header  |  1992-06-26  |  2.8 KB  |  149 lines  |  [TEXT/KAHL]

  1. /*****
  2.  * thermMenus.c
  3.  *
  4.  *        Handle the menus and commands for Thermometer™.
  5.  *
  6.  *
  7.  *        Copyright © 1991-1992 Bernard Bernstein. All rights reserved.
  8.  *
  9.  *
  10.  *****/
  11.  
  12. #include "thermo.h"
  13.  
  14. extern    WindowPtr tempWindow;
  15. extern    WindowPtr errWindow;
  16. extern    short quitting;
  17. MenuHandle        myMenus[4];
  18. extern    Boolean waiting;
  19.  
  20.  
  21. /****
  22.  * SetUpMenus()
  23.  *
  24.  *    Set up the menus and draw the menu bar.
  25.  *
  26.  ****/
  27. SetUpMenus()
  28. {
  29.     short        i;
  30.     
  31.     myMenus[appleM] = GetMenu( MENUApple );
  32.     AddResMenu( myMenus[appleM], 'DRVR' );
  33.     myMenus[fileM] = GetMenu(MENUFile);
  34.     myMenus[editM] = GetMenu(MENUEdit);
  35.     myMenus[settingsM] = GetMenu(MENUSettings);
  36.     for ( (i=appleM); (i<=settingsM); i++ ) InsertMenu(myMenus[i], 0) ;
  37.     DrawMenuBar();
  38. }
  39. /* end SetUpMenus */
  40.  
  41.  
  42. /****
  43.  *  AdjustMenus()
  44.  *
  45.  *    Enable or disable the items in the Edit menu if a DA window
  46.  *    comes up or goes away. Our application doesn't do anything with
  47.  *    the Edit menu.
  48.  *
  49.  ****/
  50. AdjustMenus()
  51. {
  52.     register WindowPeek wp = (WindowPeek) FrontWindow();
  53.     short kind = wp ? wp->windowKind : 0;
  54.     Boolean DA = kind < 0;
  55.     
  56.     enable(myMenus[editM], MItmUndo, DA);
  57.     enable(myMenus[editM], MItmCut, DA);
  58.     enable(myMenus[editM], MItmCopy, DA);
  59.     enable(myMenus[editM], MItmPaste, DA);
  60.     enable(myMenus[editM], MItmClear, DA);
  61.  
  62.     /* while we are waiting for something asynchronously, don't let */
  63.     /* the user do something that will make another tcp request */
  64.     enable(myMenus[settingsM], MItmTherm, !waiting);
  65.     enable(myMenus[settingsM], MItmNetwork, !waiting);
  66.  
  67.     CheckItem(myMenus[fileM], MItmErr, ((WindowPeek)errWindow)->visible);
  68. }
  69.  
  70. /***
  71.  * enable
  72.  *
  73.  *        Enable/disable the given menu item.
  74.  ***/
  75. static enable(menu, item, ok)
  76. Handle menu;
  77. {
  78.     if (ok)
  79.         EnableItem(menu, item);
  80.     else
  81.         DisableItem(menu, item);
  82. }
  83.  
  84.  
  85. /*****
  86.  * HandleMenu(mSelect)
  87.  *
  88.  *    Handle the menu selection. mSelect is what MenuSelect() and
  89.  *    MenuKey() return: the high word is the menu ID, the low word
  90.  *    is the menu item
  91.  *
  92.  *****/
  93. HandleMenu (long mSelect)
  94. {
  95.     short        menuID = HiWord(mSelect);
  96.     short        menuItem = LoWord(mSelect);
  97.     Str255        name;
  98.     GrafPtr        savePort;
  99.     WindowPeek    frontWindow;
  100.     
  101.     switch (menuID)
  102.       {
  103.       case    MENUApple:
  104.           switch (menuItem)
  105.           {
  106.           case MItmAbout:
  107.               doAbout();
  108.               break;
  109.           default:
  110.             GetPort(&savePort);
  111.             GetItem(myMenus[appleM], menuItem, name);
  112.             OpenDeskAcc(name);
  113.             SetPort(savePort);
  114.             break;
  115.         }
  116.         break;
  117.       case    MENUFile:
  118.         switch (menuItem)
  119.           {
  120.           case    MItmQuit:
  121.               quitting = TRUE;
  122.             break;
  123.           case    MItmErr:
  124.                   ToggleErrWindow();
  125.                   CheckItem(myMenus[fileM], MItmErr, 
  126.                                           ((WindowPeek)errWindow)->visible);
  127.               break;
  128.           }
  129.         break;
  130.       case    MENUEdit:
  131.         if (!SystemEdit(menuItem-1))
  132.           SysBeep(5);
  133.         break;
  134.       case    MENUSettings:
  135.           switch (menuItem)
  136.               {
  137.               case MItmTherm:
  138.                   changeThermPrefs();
  139.                   break;
  140.               case MItmNetwork:
  141.                   changeNetPrefs();
  142.                   break;
  143.               }
  144.         break;
  145.       }
  146. }
  147. /* end HandleMenu */
  148.  
  149.